              IOI. 23 (???) In Figura, un cablu cu 3 fire leaga partea A de
partea B. Pe latura A, cele trei fire sunt numerotate cu 1,2,3; pe latura B,
firele 1 si 3 sunt legate la comutatorul 3 iar firul 2 este legat la
comutatorul 1.

          1 - - - - - - - -         / 1
                            \     /
                              \ /
          2 - - - - - - - - - - \     2
                                  \
                                    \
          3 - - - - - - - - - - - - - 3

              In general, cablul contine m fire (1m90) marcate de la 1
la m pe latura A, si m comutatoare pe latura B, marcate de la 1 la m. Fiecare
fir este legat exact la un comutator. In fiecare comutator pot intra zero sau
mai multe fire.
              Programul trebuie sa determine modul n care se leaga firele la
comutatoare n asa fel nct sa ndeplineasca anumite cerinte. Fiecare
comutator poate nchide sau nu circuitul. Orice apasare pe comutator i
modifica pozitia: din nchis n deschis si invers. Initial toate comutatoarele
sunt pe pozitia deschis (nu circula curent). Un fir poate fi testat pe latura
A cu proba P:
P: Becul L se aprinde daca si numai daca firul este legat la un comutator
care nchide circuitul.
              Programul va ncepe cu citirea unei linii care da numarul m
din intrarea standard. Pot fi date trei tipuri de comenzi; fiecare va nsemna
tiparirea la iesirea standard a unei linii. O comanda ncepe cu una din
literele T (test fir), C (apasa pe comutator) si D (sfrsit). Comanda T este
urmata de numarul unui fir, C de numarul unui comutator iar D, de o lista n
care al i-lea element este marca comutatorului la care este legat firul i.
              Dupa comenzile T si C, programul va citi o linie de la intrare.
La comanda T raspunsurile posibile pot fi Y daca comutatorul la care este
legat firul nchide circuitul (becul este aprins), si N n caz contrar.
Comanda C modifica pozitia comutatorului i: raspunsul este Y daca noua pozitie
a comutatorului este nchis, N daca este deschis.
              Programul poate da comenzile T si C n orice ordine. Ultima
comanda este D urmata de lista finala. Nu pot fi date mai mult de 900 comenzi
n total.
Exemplu:
Iata cum arata o conversatie corespunzatoare exemplului din Figura:
Standard Output                                         Standard Input
                                                                 3
C 3                                                              Y
T 1                                                              Y
T 2                                                              N
T 3                                                              Y
C 3                                                              N
C 2                                                              Y
T 2                                                              N
D 3 1 3
Observatie: Pentru a asigura ca n problema sunt folosite intrarea si iesirea
standard, nu se va folosi unitul CRT din Pascal.
========================================
Solutia 1 (Mihai stroe)

    Cit timp nu s-a gasit configuratia finala se trece un comutator pe
  'inchis' si ae verifica pentru fiecare fir (care nu a fost gasit legat)
  daca e legat de comutator. Daca s-au legat toate firele sau a mai ramas un
  singur comutator se completeaza si se afiseaza configuratia finala.

var a:array[1..100]of integer;
    i,j,k,l,m,n:integer;
    s:string;

begin
  readln(n);
  fillchar(a,sizeof(a),0);
  for i:=1 to n-1 do
      begin
        m:=0;
        write('C ',i,' ');
        readln(s);
        for j:=1 to n do
            begin
              if a[j]=0 then
                 begin
                   m:=1;
                   write('T ',j,' ');
                   readln(s);
                   if s='Y' then a[j]:=i;
                 end;
            end;
        if m=0 then
           begin
             write('D ');
             for j:=1 to n do
                 write(a[j],' ');
             writeln;
             readln;
             halt;
           end;
        if i<n-1 then
           begin
             write('C ',i,' ');
             readln(s);
           end;
      end;
  for i:=1 to n do
      if a[i]=0 then a[i]:=n;
  write('D ');
  for i:=1 to n do
      write(a[i],' ');
  writeln;
  readln;
end.
-------------------------------------------
